package com.kfm.base.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ArrayListDemo {

    public static void main(String[] args) {
        // 创建 ArrayList 对象，底层数组是一个空数组 {}
        ArrayList<String> list = new ArrayList();

        list.add(null);
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        list.add("c");

//        list.clear();

        // 源
        List<String> strings = list.subList(1, 4);
////        strings.remove("a");
////        strings.add("6");
//        strings.set(0, "A");
        strings.clear();
        System.out.println(strings);
        System.out.println(list);

        // 集合 --> 数组
//        Object[] arr = list.toArray();
        String[] arr = list.toArray(new String[]{});
//        String[] o = (String[]) Array.newInstance(String.class, 0);
        System.out.println(Arrays.toString(arr));

//        list.remove(10);

//        for (int i = 0; i < list.size(); i++) {
//            String s = list.get(i);
//            if ("c".equals(s)){
//                list.remove(i);
////                continue;
//            }
//            System.out.println(s);
//        }




//        for (String str : list){
//            if ("c".equals(str)){
//                list.remove(str);
//            }
//            System.out.println(str);
//        }

        // ModCount 赋值给 迭代器的 expectedModCount
//        Iterator<String> iterator = list.iterator();
//
//        while (iterator.hasNext()){
//            String str = iterator.next();
//            if ("c".equals(str)){
////                list.remove(str);
//                iterator.remove();
//                continue;
//            }
//            System.out.println(str);
//        }


        String[] str = {"a", "b", "c"};

        // array --> list 不可变的
        List<String> a = Arrays.asList(str);

        System.out.println(a.size());
        System.out.println(a);

//        a.set(0, "b");
//        System.out.println(a);

        // 不可修改
//        List<Object> of = List.of("a");
//        of.set(0, "b");
    }
}
